#include<head.h>

typedef struct arg_data
{
    int id;
    char name[128];
}arg_data;

void *Func_1(void *arg)
{
    printf("这里是无参\n");
}

void *Func_2(void *arg)
{
    //参数转换
    int sock = *((int *)arg);
    printf("这里是整数有参 ");
    printf("sock = %d\n",sock);
}

void *Func_3(void *arg)
{
    //参数转换
    char *buf = (char *)arg;
    printf("这里是字符串有参  ");
    printf("buf = %s\n",buf);
}

void *Func_4(void *arg)
{
    //参数转换
    arg_data data = *((arg_data *)arg);
    printf("这里是多参数传递   ");
    printf("id = %d  ",data.id);
    printf("name = %s\n",data.name);
}

int main(int argc, char const *argv[])
{
    //声明一个线程号
    pthread_t tid;

    //无参数
    pthread_create(&tid , NULL , Func_1 , NULL);

    //有参数 一个参数 整数 需要取地址传输
    int sock =10;
    pthread_create(&tid, NULL , Func_2 , (void *)&sock);

    //有参数 一个参数 字符串 不需要取地址传输
    char buf[128] = "宝宝真可爱";
    pthread_create(&tid,NULL,Func_3,(void *)buf);

    arg_data S = {.id = 1 ,.name = "柳如烟"};
    pthread_create(&tid ,NULL,Func_4,(void *) &S);

    while (1)
    {
        
    }

    return 0;
}
